2.3 Operadores
Los operadores permiten realizar cálculos y comparaciones entre variables o valores. En Python existen distintos tipos:
1️⃣ Operadores aritméticos
Se usan para operaciones matemáticas básicas.
| Operador | Descripción | Ejemplo (a=7, b=2) | Resultado |
|---|---|---|---|
+ | Suma | a + b | 9 |
- | Resta | a - b | 5 |
* | Multiplicación | a * b | 14 |
/ | División real | a / b | 3.5 |
// | División entera | a // b | 3 |
% | Resto | a % b | 1 |
** | Potencia | a ** b | 49 |
2️⃣ Operadores relacionales
Comparan dos valores y devuelven un resultado booleano (True o False).
| Operador | Descripción | Ejemplo (a=5, b=3) | Resultado |
|---|---|---|---|
== | Igual a | a == b | False |
!= | Distinto de | a != b | True |
> | Mayor que | a > b | True |
< | Menor que | a < b | False |
>= | Mayor o igual | a >= b | True |
<= | Menor o igual | a <= b | False |
3️⃣ Operadores lógicos
Se aplican sobre valores booleanos.
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
and | Conjunción (y) | True and False | False |
or | Disyunción (o) | True or False | True |
not | Negación | not True | False |
4️⃣ Otros operadores: identidad y pertenencia
Además de los operadores aritméticos, relacionales y lógicos, Python incorpora operadores especiales que permiten comprobar la identidad de los objetos y la pertenencia de elementos dentro de colecciones.
🟩 Operadores de identidad
Los operadores de identidad no comparan valores, sino si dos variables hacen referencia al mismo objeto en memoria.
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
is | Devuelve True si dos variables apuntan al mismo objeto. | a is b | True o False |
is not | Devuelve True si dos variables apuntan a objetos distintos. | a is not b | True o False |
Ejemplo práctico:
x = [1, 2, 3]
y = x # y referencia al mismo objeto que x
z = [1, 2, 3] # z tiene el mismo contenido pero es otro objeto
print(x is y) # True (misma referencia)
print(x is z) # False (contenido igual, objetos distintos)
print(x == z) # True (los valores son iguales)
is→ comprueba identidad de objeto.==→ comprueba igualdad de valores.
🟦 Operadores de pertenencia
Estos operadores verifican si un valor se encuentra o no dentro de una colección (lista, tupla, cadena, diccionario, conjunto, etc.).
| Operador | Descripción | Ejemplo | Resultado |
|---|---|---|---|
in | Devuelve True si el elemento está dentro de la colección. | 3 in [1,2,3] | True |
not in | Devuelve True si el elemento no está dentro de la colección. | "a" not in "python" | True |
Ejemplo práctico:
frutas = ["manzana", "pera", "uva"]
print("pera" in frutas) # True
print("melon" not in frutas) # True
texto = "Python"
print("P" in texto) # True
print("p" in texto) # False (sensible a mayúsculas)
-
Se recomienda usar
isúnicamente para comprobar identidad conNone:if valor is None:
print("No tiene valor") -
Para comparar valores (listas, cadenas, números, etc.) siempre se debe usar
==o!=.
5️⃣ Operadores de asignación abreviada
Permiten actualizar el valor de una variable de forma compacta.
x = 10
x += 5 # equivale a x = x + 5
x *= 2 # equivale a x = x * 2
6️⃣ Operadores bit a bit
Los operadores bit a bit (bitwise operators) son aquellos que trabajan directamente sobre la representación binaria de los números enteros. En lugar de operar con los números en su valor decimal, comparan y manipulan los bits individuales (0 y 1) que los forman.
| Operador | Nombre | Descripción | Ejemplo (binario) | Resultado |
|---|---|---|---|---|
& | AND | Devuelve 1 si ambos bits son 1 | 6 & 3 → 110 & 011 | 010 = 2 |
| | OR | Devuelve 1 si al menos un bit es 1 | 6 | 3 → 110 | 011 | 111 = 7 |
^ | XOR (OR exclusivo) | Devuelve 1 si los bits son diferentes | 6 ^ 3 → 110 ^ 011 | 101 = 5 |
~ | NOT (complemento) | Invierte todos los bits (cambia 1 ↔ 0) | ~6 → ~(110) | -7 (complemento a dos) |
<< | Desplazamiento izq | Desplaza bits a la izquierda, rellena con 0 | 6 << 1 → 110 << 1 | 1100 = 12 |
>> | Desplazamiento der | Desplaza bits a la derecha, descarta el último bit | 6 >> 1 → 110 >> 1 | 11 = 3 |
Por ejemplo:
- El número
6en binario es110 - El número
3en binario es011
Cuando aplicamos 6 & 3, Python compara bit a bit ambas representaciones:
110 (6)
& 011 (3)
-----
010 (2)
7️⃣ Precedencia de operadores
El orden de precedencia de los operadores en Python determina qué operaciones se ejecutan primero cuando en una expresión aparecen varios operadores. Si dos operadores tienen la misma precedencia, se evalúan según su asociatividad (normalmente de izquierda a derecha).
De mayor a menor precedencia:
-
Paréntesis
()→ alteran el orden natural. -
Exponentes
** -
Signos unarios
+x,-x,~x -
Multiplicación y división
*,/,//,% -
Suma y resta
+,- -
Desplazamientos de bits
<<,>> -
Operadores bit a bit
- AND:
& - XOR:
^ - OR:
|
- AND:
-
Comparaciones
- Relacionales:
<,<=,>,>= - Igualdad:
==,!= - Identidad:
is,is not - Pertenencia:
in,not in
- Relacionales:
-
Operadores lógicos
- NOT:
not - AND:
and - OR:
or
- NOT:
-
Asignación
=,+=,-=,*=,/=, etc.
resultado = 3 + 4 * 2 ** 2
print(resultado) # 19
🔎 ¿Por qué 19 y no 28?
- Primero se calcula
2 ** 2→4 - Luego
4 * 4→16 - Finalmente
3 + 16→19